{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.rcParams[\"font.family\"] = \"serif\" \n",
    "plt.rcParams[\"figure.figsize\"] = (5,3)\n",
    "\n",
    "SMALL_SIZE = 11\n",
    "MEDIUM_SIZE = 11\n",
    "BIGGER_SIZE = 12\n",
    "\n",
    "plt.rc('font', size=SMALL_SIZE)          # controls default text sizes\n",
    "plt.rc('axes', titlesize=SMALL_SIZE)     # fontsize of the axes title\n",
    "plt.rc('axes', labelsize=MEDIUM_SIZE)    # fontsize of the x and y labels\n",
    "plt.rc('xtick', labelsize=SMALL_SIZE)    # fontsize of the tick labels\n",
    "plt.rc('ytick', labelsize=SMALL_SIZE)    # fontsize of the tick labels\n",
    "plt.rc('legend', fontsize=SMALL_SIZE)    # legend fontsize\n",
    "plt.rc('figure', titlesize=BIGGER_SIZE)  # fontsize of the figure title"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import json\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "all_seeds = [0, 10, 123, 231, 321]\n",
    "\n",
    "DATASET = 'Pubmed'\n",
    "# node_set = 'delete'\n",
    "# node_set = 'remain'\n",
    "node_set = 'test'\n",
    "\n",
    "node_set_id = {\n",
    "    'delete': 4, \n",
    "    'remain': 5,\n",
    "    'test': 6\n",
    "}\n",
    "\n",
    "seed_influence_results = []\n",
    "for SEED in all_seeds:\n",
    "    with open('results/%s_weight_results_influence_seed%d.json'%(DATASET, SEED), 'r') as f:\n",
    "        results = json.load(f)\n",
    "        seed_influence_results.append(results)\n",
    "        \n",
    "seed_fisher_results = []\n",
    "for SEED in all_seeds:\n",
    "    with open('results/%s_weight_results_fisher_seed%d.json'%(DATASET, SEED), 'r') as f:\n",
    "        results = json.load(f)\n",
    "        seed_fisher_results.append(results)\n",
    "        \n",
    "seed_project_results = []\n",
    "for SEED in all_seeds:\n",
    "    with open('results/%s_weight_results_projection_seed%d.json'%(DATASET, SEED), 'r') as f:\n",
    "        results = json.load(f)\n",
    "        seed_project_results.append(results)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "seed_influence_results  = np.array(seed_influence_results)\n",
    "seed_project_results = np.array(seed_project_results)\n",
    "seed_fisher_results = np.array(seed_fisher_results)\n",
    "\n",
    "seed_influence_results = seed_influence_results[:, :, node_set_id[node_set]] \n",
    "seed_project_results   = seed_project_results[:, :, node_set_id[node_set]] \n",
    "seed_fisher_results    = seed_fisher_results[:, :, node_set_id[node_set]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(5, 181)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "seed_influence_results.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "seed_influence_results_mean = np.mean(seed_influence_results, axis=0)\n",
    "seed_influence_results_stds = np.std(seed_influence_results, axis=0)\n",
    "\n",
    "seed_fisher_results_mean = np.mean(seed_fisher_results, axis=0)\n",
    "seed_fisher_results_stds = np.std(seed_fisher_results, axis=0)\n",
    "\n",
    "seed_project_results_mean = np.mean(seed_project_results, axis=0)\n",
    "seed_project_results_stds = np.std(seed_project_results, axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "num_delete_data = len(seed_influence_results_mean)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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r776KjNnzqRz586ce+65RCIRTjzxRI4//ngefvhhioqKGDp0KFdccQV33HEHN910E0uXLo2muXjxYo466iieffZZhg4dyuLFi9lzzz3p06cP/fr14+9//ztTpkzho48+okOHDsyaNYvzzjuPs846i4qKCkSEp59+OmpgKysrOeqooxg/fjwjR45kyZIlDBkyhMLCQkaPHs0TTzxBeXk5r7/+OtOnT6ewsJALLsjtPnOpGtROIrJNvGNLBtt3OBy5zejRoykvL6e8vJydd96ZqVOnRjvRHHPMMXTu3BmA+++/n48//phPPvmE8847DzBdm8855xwmTZoUzb36eeyxx9h2220ZOnQoAL169eLII4/koYceAmDSpEkMHz482svvoIMOYsKECY1qffnll1m1ahXDhw8HoEOHDgwfPpyJEyfWC3fqqadSVFSEiDBp0qRWnJ3Mk2rO+Slglh3es5udOzA62H6atTkcjixyzz33cNhhhyX08wyzx8KFpoVt9+7do+OH9OjRg02bNrFy5Uq6detWL/yiRYtYuXJlvamkVq1aRZcuXaL+PXr0qBdn0KBBjWpduHAhXbp0qVem3aNHDxYtWtSk7lymWeMsImcAlar6sqreKiKlwPVAEabHYDVmgtakZ0FxOLZ2WlrE0BTZHNNixx13BGD58uXRGUiWL19OSUkJXbt2TRi+d+/eVFRURN1qamqorq6O+i9fvrxenJkzZ3LwwYlHidhxxx1ZtWoV4XA4aqCXL18e1bU5kkyxxl+AhQAicryqXgl0w4ylcTDQTVX/mjmJDocj1znooIPYb7/9uPfeewFTgfjggw9y7rnnJuxFd9ZZZ/H999/z0UcfAWYgoT/84Q88++yzAJx//vk8/vjjbNiwATDtr6+6KjZacYcOHdiwYQMffvghl112GSeccAKdO3dmypQpgHlRPf7445x//uY7THwyxRprVfVLuz4WeNnOfFJvsH0ReU1Vh6ZboMPhaDtmzJjB5ZebVrGjR4/mxBNPZNy4cVH/a6+9ltdee42ioiLmzp0bbRMdCASYOnUqF154IUcffTSRSISBAwfyt7/9LeF+evXqxbRp07jiiiuIRCKEw2GGDBnC2WefDcCFF15IbW0tQ4YMobi4mJKSEh555JFo/LFjx3LmmWdSUFDAXXfdRbt27XjjjTcYM2YMkydPpqqqihEjRjB6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",
      "text/plain": [
       "<Figure size 360x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axs = plt.subplots()\n",
    "\n",
    "x_axis = (np.arange(num_delete_data) + 1) / num_delete_data\n",
    "######################################\n",
    "\n",
    "y_mean = seed_project_results_mean\n",
    "y_std  = seed_project_results_stds\n",
    "axs.plot(x_axis, y_mean, linewidth=3, linestyle='-', label='Projector')\n",
    "axs.fill_between(x_axis, y_mean-y_std, y_mean+y_std, alpha=0.15)\n",
    "\n",
    "######################################\n",
    "\n",
    "y_mean = seed_influence_results_mean\n",
    "y_std  = seed_influence_results_stds\n",
    "axs.plot(x_axis, y_mean, linewidth=3, linestyle='-', label='Influence+')\n",
    "axs.fill_between(x_axis, y_mean-y_std, y_mean+y_std, alpha=0.15)\n",
    "\n",
    "######################################\n",
    "\n",
    "y_mean = seed_fisher_results_mean\n",
    "y_std  = seed_fisher_results_stds\n",
    "axs.plot(x_axis, y_mean, linewidth=3, linestyle='-', label='Fisher+')\n",
    "axs.fill_between(x_axis, y_mean-y_std, y_mean+y_std, alpha=0.15)\n",
    "\n",
    "######################################\n",
    "plt.title('%s: $||\\sigma(\\mathbf{w}_p^T \\mathbf{h}_i)-\\sigma(\\mathbf{w}_u^T \\mathbf{h}_i)||_2, i\\in\\mathcal{V}_{%s}$'%(DATASET, node_set), fontsize=15)\n",
    "axs.set_ylabel('$\\ell_2$-norm difference', fontsize=15)\n",
    "axs.set_xlabel('Unlearn percentage (%)', fontsize=15)\n",
    "# axs.xaxis.get_major_locator().set_params(integer=True)\n",
    "axs.grid(True)\n",
    "fig.tight_layout()\n",
    "axs.legend(fontsize=13)\n",
    "plt.xlim(0.1, 1)\n",
    "\n",
    "plt.savefig('%s_%s_softmax_diff.pdf'%(DATASET, node_set), bbox_inches='tight')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
